新写了一个PL/I
程序,需要在程序里面用到动态数组来提高效率,所以总结了一下PL/I
中动态数组(Dynamic Array)的用法:
1.申明一个Controlled的数组叫做WT_TMPARRAY_INFO
,此时并不知道该数组的长度:
DCL INPUTFIL FILE RECORD INPUT;
DCL TMPARRAY_CTR FIXED BIN(31) INIT(0);
DCL TMPARRAY_SUB FIXED BIN(31) INIT(1);
DCL 01 TMPARRAY_RECORD,
05 INPUT_CUR CHAR(03) INIT(' '),
05 INPUT_ACCT CHAR(05) INIT(' ');
/*******定义未知长度的动态数组WT_TMPARRAY_INFO*************************/
DCL 01 WT_TMPARRAY_INFO(*) CONTROLLED,
05 WT_TMP_CUR CHAR(03) INIT(' '),
05 WT_TMP_ACCT CHAR(05) INIT(' ');
2.一旦得知了数组需要的长度,即可为它allocate空间。数组的长度可以是外部文件传进来,也可以是你程序中逻辑计算得到,这个无所谓哪里来的,只要赋给变量TMPARRAY_CTR
就好了。
ALLOCATE WT_TMPARRAY_INFO (TMPARRAY_CTR);
3.分配了空间之后即可初始化数组,给其赋值。
rubyDO TMPARRAY_SUB = 1 TO TMPARRAY_CTR; READ FILE(INPUTFIL) INTO (TMPARRAY_RECORD); WT_TMP_CUR(TMPARRAY_SUB) = INPUT_CUR; WT_TMP_ACCT(TMPARRAY_SUB) = INPUT_ACCT; END;
Comments !